#!/bin/bash

arg_path=$(pwd)

if [[ $arg_path == /cygdrive/* ]]; then
    arg_path=$(cygpath -w $arg_path)
    arg_path=${arg_path//\\//}  # 将路径中的反斜杠替换为正斜杠
fi


# 参数解析
mode="simple"
if [[ "$1" == "--simple" || "$1" == "-s" ]]; then
    mode="simple"
fi

if [[ "$1" == "--full" || "$1" == "-f" ]]; then
    mode="full"
fi

if [[ "$1" == "--update" || "$1" == "update" ]]; then
    mode="update"
fi


# 创建临时目录
temp_dir=${arg_path}/cbuildtool_tmp
mkdir -p "$temp_dir" || {
    echo "❌ 创建临时目录失败，请检查目录权限或路径是否正确！"
    exit 1
}
# echo "🔧 临时目录：$temp_dir"


# 克隆远程仓库（浅克隆）
git clone --depth=1 https://gitee.com/wiseforever/cbuildtool.git "$temp_dir" || {
    rm -rf "$temp_dir" # 删除临时目录
    echo "❌ 克隆仓库失败，请检查网络，git环境或仓库地址是否正确！"
    exit 1
}

if [ ! -d "$temp_dir" ]; then
    echo "❌ 克隆仓库失败，请检查网络，git环境或仓库地址是否正确！"
    exit 1
fi

# 判断 $temp_dir/.vscode 和 $temp_dir/tools 是否存在
if [ ! -d "$temp_dir/.vscode" ]; then
    rm -rf "$temp_dir" # 删除临时目录
    echo "❌ 未找到远程仓库的 .vscode 目录，请检查仓库是否正确克隆！"
    exit 1
fi

if [ ! -d "$temp_dir/tools" ]; then
    rm -rf "$temp_dir" # 删除临时目录
    echo "❌ 未找到远程仓库的 tools 目录，请检查仓库是否正确克隆！"
    exit 1
fi

if [ ! -d "$temp_dir/cmake" ]; then
    rm -rf "$temp_dir" # 删除临时目录
    echo "❌ 未找到远程仓库的 cmake 目录，请检查仓库是否正确克隆！"
    exit 1
fi


date_str=$(date "+%Y%m%d_%H%M%S")

if [[ $mode == "update" ]]; then
    # 更新你需要的内容到当前目录
    if [[ -f "$temp_dir/install_cb.sh" ]]; then
        mkdir -p cbuildtool_bak/bak_$date_str/
        mv ${arg_path}/install_cb.sh cbuildtool_bak/bak_$date_str/
        cp -a "$temp_dir/install_cb.sh"  ${arg_path} 2>/dev/null
        rm -rf "$temp_dir"
        exit 0
    else
        echo "远程仓库未找到 install_cb.sh 脚本，请检查仓库是否正确克隆！"
        exit 1
    fi
fi




# 检查当前了目录是否存在.vscode 和 tools 目录，若有则直接mv到当前目录tool_backup目录中备份
# 备份文件加上后缀时间戳，防止覆盖 确保同一时间备份的.vscode 和 tools 目录后缀时间戳相同

if [ -d ".vscode" ]; then
    mkdir -p cbuildtool_bak
    mv ${arg_path}/.vscode cbuildtool_bak/bak_$date_str/
fi

if [ -d "tools" ]; then
    mkdir -p cbuildtool_bak
    mv ${arg_path}/tools cbuildtool_bak/bak_$date_str/
fi

if [ -d "cmake" ]; then
    if [ -f "cmake/ez_custom_func.cmake" ]; then
        mkdir -p cbuildtool_bak/bak_$date_str/cmake
        mv ${arg_path}/cmake/ez_custom_func.cmake cbuildtool_bak/bak_$date_str/cmake/
    fi
fi

# 判断当前目录是否存在 cb 和 cb.conf 文件
if [ -f "cb" ]; then
    mv cb cbuildtool_bak/bak_$date_str/
fi

if [ -f "cb.conf" ]; then
    mv cb.conf cbuildtool_bak/bak_$date_str/
fi




# $temp_dir/tools/script/cb 是否有可执行权限 若没有则赋予
if [ ! -f "$temp_dir/tools/script/cb" ]; then
    rm -rf "$temp_dir" # 删除临时目录
    echo "❌ 未找到 cb 脚本，请检查仓库是否正确克隆！"
    exit 1
fi

if [ ! -x "$temp_dir/tools/script/cb" ]; then
    chmod +x "$temp_dir/tools/script/cb"
fi

if [[ $mode == "simple" ]]; then
    # 拷贝你需要的内容到当前目录
    cp -a "$temp_dir/.vscode" ${arg_path} 2>/dev/null
    cp -a "$temp_dir/tools/script/cb"  ${arg_path} 2>/dev/null
    cp -a "$temp_dir/tools/script/cb.conf"  ${arg_path} 2>/dev/null
    mkdir -p ${arg_path}/cmake
    cp -a "$temp_dir/cmake/ez_custom_func.cmake"  ${arg_path}/cmake/ 2>/dev/null
fi

if [[ $mode == "full" ]]; then
    # 拷贝你需要的内容到当前目录
    cp -a "$temp_dir/.vscode_full" ${arg_path}/.vscode 2>/dev/null
    cp -a "$temp_dir/tools"  ${arg_path} 2>/dev/null
    mkdir -p ${arg_path}/cmake
    cp -a "$temp_dir/cmake/ez_custom_func.cmake"  ${arg_path}/cmake/ 2>/dev/null
fi

# 清理临时目录
rm -rf "$temp_dir"

echo "✅ 已提取 .vscode 和 tools 到当前目录（无多余文件）"
